<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<script>

// prototype 显式原型，每一个函数都有（Function.prototype除外）
// __proto__ 隐式原型，每一个对象都有

// ES5新增内容：

// 严格模式，一种更为严格的代码运行模式
// 严格模式可以消除JS的一些不合理的行为，提高编译和运行速度
// 1.不能隐式声明变量
// 2.多个形参不能重名
// 3.一些不合理的操作不再做静默失败处理（报错）
// 4.形参和arguments不再相互关联
// 5.禁止函数中的this直接指向window对象
// 6.eval函数会创建新的作用域
// 7.禁止使用0开头的八进制（以0o开头表示）
// 8.函数只能声明在全局或函数中

// indexOf()返回元素在数组中第一次出现的下标（从左到右）
// lastIndexOf()返回元素在数组中第一次出现的下标（从右到左）
// reduce()遍历数组并构建一个最终的值（归并）

// classList对象：
// 每一个DOM元素都有classList属性，主要用于操作元素的类名
// dom.classList.add()添加类名
// dom.classList.remove()删除类名
// dom.classList.contains()判断是否包含类名
// dom.classList.toggle()反转类名

// 静态方法（构造函数的方法）
// Object.defineProperty(obj,attr,descriptor)定义对象的属性和描述符
// Object.keys(obj)获取对象自身所有可枚举属性
// Object.getOwnPropertyNames(obj)获取对象自身所有属性
// Object.create(obj,descriptors)创建对象指定原型对象并设置属性的描述符
// Object.getPrototypeOf(obj)获取对象的原型对象
// Object.getOwnPropertyDescriptor(obj,attr)获取对象属性的描述符对象

// JSOn.parse()将JSON字符串转成JSON对象
// JSOn.stringify()将JSON对象转成JSON字符串

// ES6中的let和const

// let用于声明变量
// const用于声明常量（通常为大写字母命名，不能重新赋值）

// 与var不同的地方：
// 1.不能重复声明
// 2.在全局声明时不会添加到window对象中
// 3.会形成块级作用域，仅在块内部起作用
// 4.不能和形参重名
// 5.声明不会提升

</script>
</body>
</html>